<!--
 * @LastEditors: 七七
 * @Date: 2023-01-11 13:48:42
-->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>包装类</title>
</head>

<body>
  <script>
    // JS提供了三个包装类，可以将基本数据类型转换为对象
    // String:将基本数据类型字符串转为String对象
    // Number:将基本数据类型数值转为Number对象
    // Boolean:将基本数据类型布尔值转为boolean对象

    // 实际开发中不会使用基本数据类型的对象，如果使用基本数据类型的对象，在做一些比较时可能会带来一些不可预期的结果
    let arr = new Number(3);
    console.log(typeof arr); //object

    let bool1 = new Boolean(true);
    let bool2 = true;
    console.log(bool1 === bool2); //false

    // 方法和属性只能添加给对象，不能添加给基本数据类型
    // 当我们对一些基本数据类型的值去调用属性和方法时，浏览器会临时使用包装类先将其转换为对象，然后再调用对象的属性和方法，调用完后，再将其转换为基本数据类型
    var s = 123;
    s = s.toString();
    console.log(s); //123
    console.log(typeof s); //string
    s.hello = 'hello'
    console.log(s.hello); //undefined
  </script>
</body>

</html>